Added unit test for the DevController subclasses.
authoremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Mon, 21 Nov 2005 11:41:39 +0000 (12:41 +0100)
committeremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Mon, 21 Nov 2005 11:41:39 +0000 (12:41 +0100)
Signed-off-by: Ewan Mellor <ewan@xensource.com>
tools/python/setup.py
tools/python/xen/xend/server/tests/__init__.py [new file with mode: 0644]
tools/python/xen/xend/server/tests/test_controllers.py [new file with mode: 0644]

index 3a9c5d013e003de4410187431582395ac7016326..79b9730a1ae8246b5d4d6d48350d030962e7522b 100644 (file)
@@ -45,6 +45,7 @@ setup(name            = 'xen',
                          'xen.sv',
 
                          'xen.xend.tests',
+                         'xen.xend.server.tests',
                          'xen.xm.tests'
                          ],
       ext_package = "xen.lowlevel",
diff --git a/tools/python/xen/xend/server/tests/__init__.py b/tools/python/xen/xend/server/tests/__init__.py
new file mode 100644 (file)
index 0000000..8d1c8b6
--- /dev/null
@@ -0,0 +1 @@
diff --git a/tools/python/xen/xend/server/tests/test_controllers.py b/tools/python/xen/xend/server/tests/test_controllers.py
new file mode 100644 (file)
index 0000000..16b7941
--- /dev/null
@@ -0,0 +1,81 @@
+import os
+import re
+import unittest
+
+import xen.xend.XendRoot
+
+xen.xend.XendRoot.XendRoot.config_default = '/dev/null'
+
+from xen.xend.server import netif
+
+
+FAKE_DOMID = 42
+FAKE_DEVID = 63
+
+
+xroot = xen.xend.XendRoot.instance()
+
+
+class test_controllers(unittest.TestCase):
+
+    def testNetif(self):
+        controller = self.controllerInstance(netif.NetifController)
+
+        self.assertNetif(controller.getDeviceDetails(['vif']), None)
+        self.assertNetif(
+            controller.getDeviceDetails(
+            ['vif', ['mac', 'aa:bb:cc:dd:ee:ff']]),
+            'aa:bb:cc:dd:ee:ff')
+
+
+    def assertNetif(self, results, expectedMac):
+
+        (devid, backdets, frontdets) = results
+
+        self.assertEqual(devid, FAKE_DEVID)
+
+        self.assertEqual(backdets['handle'], str(FAKE_DEVID))
+        self.assertEqual(backdets['script'],
+                         os.path.join(xroot.network_script_dir,
+                                      xroot.get_vif_script()))
+        self.assertValidMac(backdets['mac'], expectedMac)
+
+        self.assertEqual(frontdets['handle'], str(FAKE_DEVID))
+        self.assertValidMac(frontdets['mac'], expectedMac)
+
+
+    MAC_REGEXP = re.compile('^' +
+                            ':'.join([r'[0-9a-f][0-9a-f]'
+                                      for i in range(0, 6)]) +
+                            '$')
+
+    def assertValidMac(self, mac, expected):
+        if expected:
+            self.assertEqual(mac, expected)
+        else:
+            self.assert_(self.MAC_REGEXP.match(mac))
+            
+
+    def controllerInstance(self, cls):
+        """Allocate an instance of the given controller class, and override
+        methods as appropriate so that we can run tests without needing
+        Xenstored."""
+        
+        result = cls(FakeXendDomainInfo())
+
+        result.allocateDeviceID = fakeID
+
+        return result
+
+
+class FakeXendDomainInfo:
+    def getDomainPath(self):
+        return "/test/fake/domain/%d/" % FAKE_DOMID
+
+
+def fakeID():
+    return FAKE_DEVID
+
+
+def test_suite():
+    return unittest.makeSuite(test_controllers)